S
tage VerslagIKS2-Waardemeters
Tom Vermeulen [email protected]
Dit verslag is tot stand gekomen in mijn 2de leerjaar aan de Hogeschool Eindhoven, in het kader van mijn 1ste stage. In dit verslag vindt u onderandere een beschrijving van het project IKS2-waardemeters.
Dit document geeft een beschrijving van het arbeidsproces met alles wat daarbij hoort. Voor een gedetailleerdere omschrijving van het programma en de werking er van verwijs ik graag naar dhr. J. Debal op afdeling warmwals van de Sidmar
Mijn dank gaat uit naar dhr. J. Debal, die mij tijdens de gele project duur heeft geholpen op het vlak van de informatica en dan vooral op het gebied van het programmeren in Visual Basic. Ook wil ik de P. de Jong bedanken die mij heeft begeleid bij het schrijven van de diverse stagedocumenten, waaronder ook dit stageverslag. Verder natuurlijk ook mijn vader en moeder die toch maar weer 10 weken met mij zaten opgescheept.
Voorwoord
*Inhoudsopgave
*Inleiding
*Stage Voorbereiding
*De Sidmar
*Historiek.
*Situering
*Productieproces.
*KOOKSFABRIEKEN
*GRONDSTOFFEN BEHANDELING
*SINTERFABRIEKEN
*HOOGOVENS
*STAALFABRIEK
*WARMWALSERIJ
*KOUDWALSERIJEN
*WARMWALSERIJ
*Slabs
*Dikke platen
*Rollen en platen
*Het Project
*De Software
*De Werking
*De Specificaties
*Internet
Explorer *Internet Information Server
*WebAction
*Visual Basic ActiveX objects
*Acces 97 database
*De Aanpak
*De Database
*Login Database
*IKS2 Database
*Standaard naamgeving van queries
*De Programmas
*Login
*HTML-Objects
*IKS2 en IKS2Acces
*Standaard naamgeving in Visual Basic
*Het Testen
*Debuggen
*ErrorTrapping
*De Intranet Applicatie
*Login
*Applicatie
*Management waardemeters
*Ingave waardemeters
*Rapportering waardemeters
*Conclusie
*Bijlage A –queries-
*LOGIN
*IKS2
*Bijlage B -Programma Schema's-
*Bijlage C –parameter overdracht-
*Bijlage D -Programma Code-
*Bijlage -Informatiebronnen-
*Literatuur
*Online Literatuur
*Bijlage E -Plan Van Aanpak (b)-
*Bijlage F -Weekrapportage-
*Week1
*Week2
*Week3
*Week4
*Week5
*Week6
*Week7
*Week8
*Week9
*Week10
*
Tijdens mijn 1e stageperiode ben ik werkzaam geweest op de afdeling Warmwals van SIDMAR, waar ik werd begeleid door dhr. J. Debal, die op deze afdeling werkzaam is als IBO
Het project waar ik gedurende mijn stageperiode aan mag werken, bestaat in het automatiseren van de ingave, verwerking en rapportering van IKS2-waardemeeters. De toepassing hiervoor moet op het intranet kommen te staan.
In dit verslag vindt een gedetailleerde omschrijving van de Sidmar en het project. Een beschrijving van de huidige situatie inzake het process van de ingave, verwerking en rapportage van de IKS2-waardemeters. Verder zal er een beschrijving volgen van mijn werkzaamheden en de problemen die zich voordeden.
Als laatste zijn er nog een paar hoofdstukken met bijlagen zoals literatuurlijst, programmaschemas, programmalisting(op disk) en het PVA(b).
Voorafgaande op mijn stageperiode waren er een aantal onderdelen die afgewerkt moesten worden namelijk;
Alleen het eerste onderdeel van de drie kon door mij in de voorgeschreven tijd worden afgewerkt. Er werd in de planning van de stagevoorbereidin namelijk geen rekening mee gehouden dat, zowel de student en de stagedocent aan het eind van een blok het erg druk heb met tentamens en het afwerken van opdrachten. Om de hiervoor genoemde reden kon ik pas op mijn stageplaats echt goed contact opnemen met mijn stagedocent over het PVA(s) en het stageverslag. Het gevolg hiervan was dat ik het PVA(s) met een vertraging van enkele weken pas aan mijn stagedocent kon afleveren, de bureaucratische molen van het stagebureau was voor de versnelling van dit process ook niet echt bevorderlijk.
Ook bleek enkele weken na de aanvang van mij stage, dat mijn contract niet door school ondertekend kon worden vanwege een clouzule over ongevallen en het toebrengen van schade aan derden. Dit probleem kon worden opgelost als de Sidmar het contract aanpaste of de student een extra verzekering nam voor het stagelopen in het buitenland. Dit alles heeft ongeveer 6 weken geduurd. Van deze 6 weken heeft het contract er 5 bij het stagebureau doorgebracht.
In 1962 nam de Luxemburgse staalreus Arbed, samen met enkele andere Belgische en Europese staalbedrijven en financiële groepen het initiatief om aan het kanaal Gent-Terneuzen een staalbedrijf op te richten. De stad Gent verleende haar medewerking tot het verwerven van een terrein van 624 ha. De opbouw van Sidmar begon in december 1963 . Sidmar begon de activiteiten aan het kanaal Gent-Terneuzen in 1966 louter als koudwalserij. In 1967 startte de eigenlijke ijzer- en staalproductie met hoogoven, staalfabriek
en warmwalserij.
Het bedrijf ligt aan de rechteroever van het zeekanaal Gent-Terneuzen, op 15 km van het Gentse stadscentrum en op minder dan 17 km van de sluis van Terneuzen, waardoor het via de Westerschelde verbonden is met de Noordzee.
SIDMAR staat voor "Staal InDustrie MARitiem" waarmee expliciet aangeduid wordt dat het bedrijf zich op de scheepvaart richt voor het transporteren van de overzeese grondstoffen, hoofdzakelijk ijzerertsen en kolen.
Fig.1 plattegrond SIDMAR
Jaarlijks produceert Sidmar 3,6 miljoen ton ruwijzer en 4 miljoen ton ruwstaal. De jaarlijkse omzet bedraagt 50 miljard BEF. Sidmar stelt 5750 werknemers te werk en bestrijkt op dit ogenblik meer dan 1000 ha met een spoorwegnet van zowat 52 km en met ongeveer 24 kilometers banen.
Sidmar is een maritiem geïntegreerd staalbedrijf waarvan het productieprogramma uitsluitend gericht is op de fabricage van vlakke producten.
In de staalnijverheid is het gebruikelijk een onderscheid te maken tussen lange producten, zoals betonijzer, zware profielen, rails, e.a. en vlakke producten zoals rollen en platen. Sidmar produceert enkel vlakke producten met een hoge toegevoegde waarde en met als voornaamste kenmerken:
- uniforme mechanische eigenschappen
- zuiver oppervlak
- uitstekende vlakheid
- soepele vormbaarheid en rekbaarheid
- superieure lasbaarheid
Ruw geschetst komt het Sidmar-staal terecht bij:
- de auto-industrie (koetswerk voor auto’s, wielvelgen, …)
- de witgoedsector (koelkasten, was- en droogmachines, …)
- de bouwnijverheid (stalen loodswanden, trappen, …)
- de meubelfabrikanten
- de radiatorenfabrikanten
Het bedrijf beschikt over alle productie-eenheden om, vertrekkende van de grondstoffen het eindproduct (warmgewalste of koudgewalste platen en rollen) te produceren, nl.: - Kooksfabriek
- Sinterfabrieken
- Hoogovens
- Staalfabriek
- Warmwalserij
- Koudwalserijen
Fig.2 Productieschema SIDMAR
Omdat steenkolen niet geschikt zijn om rechtstreeks in de hoogovens verbruikt te worden, worden de kolen verkookst. Ze bevatten immers te veel schadelijke of onnuttige producten voor het reducerend smeltproces en bovendien zijn ze niet sterk genoeg om de lading in de hoogovens te dragen. De kolen worden in de kooksovens opgewarmd. Daar er geen zuurstof aanwezig is in deze afgesloten ovens, verbranden de kolen niet. (= droge destilatie) Zodra de kolen verkookst zijn, worden zij geblust met water en laat men ze verder uitdampen op de kookskaai.
De verschillende soorten ertsen worden zorgvuldig gescheiden opgeslaan in de ertsopslagplaatsen. In nauwkeurig bepaalde verhoudingen worden ze opnieuw afgegraven en samen met smeltmiddelen en recuperatiestoffen vermengd op het
mengbed. Zo’n mengbed heeft tot doel de verschillende grondstoffen zo goed mogelijk met elkaar te vermengen. De gevormde bedden worden opnieuw afgegraven om een optimaal mengsel te bekomen.
Uit een mengsel van ijzererts, ijzerhoudende recuperatiestoffen en diverse smeltmiddelen produceren de sinterfabrieken een instant- ertsproduct van optimale stukgrootte en scheikundige samenstelling dat direct in de hoogovens gebruikt kan worden. Het te sinteren mengsel wordt samen met de fijn verdeelde kooks vermengd en gebakken. Daarna wordt de sinter gekoeld, gebroken en afgezeefd.
Hoogovens produceren vloeibaar ruwijzer door het reducerend smelten van ijzerertsen. Hiertoe wordt de hoogoven geladen met kooks, die verbrand worden, waardoor het reductiegas en de nodige warmte bekomen worden om de ertsen af te smelten. De smeltmiddelen, die zich in de sinter bevinden, hebben hoofdzakelijk tot doel het ruwijzer te zuiveren en het smeltpunt van de onzuivere elementen in de ertsen te verlagen. De hete lucht die ingeblazen wordt, moet ervoor zorgen dat heel het proces aan de gang blijft. Tijdens het hoogovenproces wordt er, naast ruwijzer, ook (ruwijzer-)slak gevormd. Deze slak bevat de smeltmiddelen en de onzuiverheden uit het erts en wordt samen
met het ruwijzer afgetapt.
In de staalfabriek wordt het ruwijzer, afkomstig van de hoogovens, omgezet tot staal door het verbranden van de onzuiverheden. Nadat het ruwijzer ontzwaveld is, wordt de zwavelslak ervan verwijderd. Na het afslakken worden afgewogen hoeveelheden schroot toegevoegd aan het ruwijzerbad. Daarna wordt zuivere zuurstof op het ruwijzer geblazen. Er wordt eveneens een hoeveelheid kalk en erts toegevoegd om het zuiveringsproces zo optimaal mogelijk te laten verlopen.
Wanneer de ongewenste stoffen in het ruwijzer ofwel tot slakken ofwel tot gassen verbrand zijn, voegt men toeslagstoffen en legeringselementen toe om de gewenste staalkwaliteit te bekomen. Het staal en de slak worden beiden afgegoten en om een nog betere kwaliteit te bekomen, kan het staal nog enkele behandelingen ondergaan.
Het staal wordt in strengen van welbepaalde afmetingen gegoten. Wanneer de streng gestold is, wordt het op lengte en breedte gesneden. De bekomen slabs worden tenslotte gestempeld, gestapeld en afgevoerd naar het slabbenpark.
In het slabbenpark worden de slabs gekoeld aan de lucht of in waterbakken. Daarna worden ze doorgegeven aan de schoonbranderij waar ze nauwkeurig
gecontroleerd worden op eventuele gietfouten. De foutieve plaatsen worden
gemerkt en in de schoonbranderij weggebrand.
Alle slabs worden opnieuw op walstemperatuur gebracht in 1 van de 3 door schuifovens of in de hefbalkoven. De slabs zijn walsklaar als ze een temperatuur van ongeveer 1200 °C bereikt hebben.
Wanneer de slab uit de oven komt, wordt de oxidelaag verwijderd door de oxidebreker. De oxidebreker spuit boven- en onderzijde van elke slab af met een waterstraal met een druk van 140 bar. Vervolgens wordt gelijktijdig zowel de dikte als de breedte van de slab gereduceerd in het omkeer-voorwalstuig. In het hiernavolgende continu-voorwalstuig wordt de dikte van de slab nogmaals gereduceerd.
De kop en de staart van de bekomen plaat wordt in de eindwalsgroep afgeknipt; de opnieuw ontstane oxidelaag wordt verwijderd. Elk walstuig van de eindwalsgroep reduceert de dikte van de plaat tot de vooropgezette einddikte. De plaat wordt met waterstralen onder lage druk gekoeld tot op de juist opwikkeltemperatuur. Daarna wordt de plaat op 1 van 3 haspels opgewikkeld tot een rol. De opgewikkelde rol gaat dan ofwel naar de warmbandafwerking ofwel naar de beitserij voor verdere bewerking in de koudwalserij.
Wordt het warmgewalste staal verkocht als rol dan wordt deze hier klant-klaar gemaakt, verkocht en verzonden. Wordt het warmgewalste staal verkocht als platen, dan wordt de rol hier op breedte en lengte geknipt tot platen. De platen worden gecontroleerd op eventuele fouten, gestapeld, verpakt en verzonden.
De aangevoerde warmgewalste rollen, bestemd voor de koudwalserij, worden afgekoeld. Daarna wordt de rol op een afwikkelhaspel gebracht en afgewikkeld. De afgewikkelde rollen worden aan ekaar gelast, gebeitst, afgespoeld en gedroogd. Daarna worden ze op lengte en breedte gesneden, voorzien van een olie-beschermlaag en tenslotte terug opgewikkeld.
De gebeitste rollen worden koudgewalst tot op de dikte die door de klant gevraagd werd. Deze diktereductie is mogelijk door een combinatie van druken trekkrachten: druk op de walsen en trek tussen de walstuigen. Voor het eerste walstuig bevindt zich een afwikkelhaspel die de rol afrolt. Bij het verlaten van het laatste walstuig wordt de band terug opgewikkeld, afgevoerd, gebonden, geknipt en gestockeerd in de stapelgoeierijen.
Om een hogere productiviteit te bekomen bestaat de TTS uit een continu beitserij en een tandem. (zie voorgaande paragrafen)
Bij het koudwalsen is de plaat door structuurveranderingen te hard geworden om verwerkt te worden. Om de plaat haar gunstige verwerkingseigenschappen terug te geven moet ze hier een thermische behandeling ondergaan, wat gebeurt in de gloeiovens. Maximaal 4 warmgewalste rollen worden boven elkaar gestapeld op een ovensokkel. Deze stapel wordt van de buitenlucht afgesloten d.m.v. een beschermklok. Hierboven komt dat de eigenlijke gloeioven die de stapel doorgloeit tot een temperatuur van 700 °C. Na het gloeien wordt de oven weggenomen en vervangen door een koelklok waardoor het staal afgekoeld wordt tot een temperatuur tussen de 100 °C en de 120°C. Daarna worden de stapels geplaatst boven koelrooster om de temperatuur verder te doen dalen beneden de 40 °C.
Bij continu-gloeien streeft men ernaar op een snelle manier aan het staal een homogene en uniforme warmtebehandeling te geven waarbij de bekomen eigenschappen minstens evenwaardig zijn aan of zelfs beter dan die van de stapelgloeierij. De aangevoerde rollen worden op de afwikkelhaspel gebracht en worden ontdaan van kop en staart. Vervolgens worden de rollen aan elkaar gelast. In eerste instantie wordt de band volledig ontvet. Na het spoelen en drogen wordt de band opgewarmd tot ongeveer 50 °C in een voorverwarmingskamer. In de opwarmingskamer wordt de band opgewarmd tot een temperatuur tussen de 700 °C en de 850 °C. In de doorwarmingskamer wordt het staal een korte tijd op deze temperatuur gehouden. Dan volgt een eerste koelkamer waarin de temperatuur van de plaat daalt tot ongeveer 400 °C. Een volgende thermische bewerking is het gecontroleerde en het versnelde verouderen van de staalplaat door ze een welbepaalde tijd op de temperatuur van 400 °C te houden. Daarna wordt de plaat verder afgekoeld in de tweede koelkamer tot ongeveer 100 °C en in een tank met water tot ongeveer 30 °C. Nadien wordt de plaat gedroogd. In het uitgangsgedeelte gaat de band door een hardingswalstuig waar de plaat de nodige verlenging, ruwheid en hardheid krijgt. De plaat wordt op lengte en breedte gesneden. Na inspectie, inoliën en stempelen wordt de band opgewikkeld op 1 van 2 opwikkelhaspels.
De uitgegloeide rollen van de stapelgloeierij moeten in de hardingswalserij nog een bijkomende koudvervorming ondergaan. Het hardingswalstuig geeft de platen de nodige verlenging, ruwheid en vlakheid.
Wanneer het staal verkocht wordt als platen, moeten de rollen, afkomstig van de continu- gloei- en afwerkingslijn of van de hardingswalserij op 1 van de 3 knipbanen afgewikkeld worden. De band wordt op breedte en lengte gesneden. Een vlakmachine kan daarbij eventueel de plaatvlakheid nog verbeteren. Na inspectie worden de platen al dan niet ingeolied en gestempeld, gestapeld en in het magazijn opgeslagen.
Beide overwikkelbanen zijn een inspectie- en afwerkingslijn, waarbij de oppervlakgesteldheid van de rol aan een bijkomend onderzoek onderworpen wordt. De rol wordt in de overwikkelbaan op de juist breedte gesneden. De plaat wordt zowel op de dikte als op eventuele fouten gecontroleerd. Minder goede stukken worden weggesneden, rollen worden op het juiste gewicht gebracht en kleinere roleenheden worden aan elkaar gelast. Daarna worden de rollen bestempeld, ingeolied en gebonden. De opnieuw opgewikkelde rollen worden nadien verpakt, in het magazijn gestockeerd en vervolgens naar verzonden.
Slabs
De slabs, afkomstig van de kontinu-gieterij worden afgevoerd naar het slabbenpark, waar ze aan de lucht of in waterbakken gekoeld worden.
Daarna worden ze doorgegeven aan de schoonbranderij waar ze nauwkeurig gecontroleerd worden op eventuele gietfouten. De foutieve plaatsen worden gemerkt en in de schoonbranderij weggebrand.
Vandaar worden ze overgebracht naar 1 van de 3 doorschuifovens of naar de hefbalkoven, waar ze op walstemperatuur gebracht worden. In de doorschuifovens duwt de laadmachine de slabs door de oven. Ze verlaten de oven via de ontlaadmachine, waardoor ze direct op de rollenbaan van de warmwalsgroep terechtkomen. In de hefbalkoven daarentegen rusten de slabs op watergekoelde balken. Voor het transport zorgen beweegbare watergekoelde hef-balken, die de slabs opnemen en ze stapsgewijze verplaatsen in de oven naar de uitgang toe.
De slabs zijn walsklaar als ze een temperatuur van ongeveer 1200 °C bereikt hebben.
Fig. 3 Doorschuifovens - Hefbalkoven
Elke slab die uit de oven komt, heeft een oxidelaag. Deze laag wordt door de oxidebreker verwijderd. Elke slab wordt aan boven- en onderzijde afgespoten met een waterstraal onder een druk van 140 bar.
De slabs worden met behulp van de rollenbaan naar de voorwalstuigen geleid. Het eerste walstuig is een omkeerwalstuig, dat de dikte van de slabs reduceert in 3, 5 of 7 walspassen. Gelijktijdig vindt een breedtebeheersing plaats in 3 stuikpassen. In het tweede walstuig gebeurt slechts één enkele gladpas.
De slabs verlaten de voorwalstuigen als dikke plaat.
Voor de eindwalsgroep bevindt zich een draaiende schaar die de kop en de staart van de dikke plaat afknipt.
De oxidelaag van de dikke plaat wordt verwijderd door de oxidebreker.
De dikke plaat gaat vervolgen het eerste eindwalstuig binnen. Elk walstuig van de eindwalsgroep reduceert de dikte van de plaat naar een vooropgestelde einddikte, variërend tussen 1,5 en 12,7 mm. Daartoe wordt in elk walstuig de walsdruk heel nauwkeurig afgeregeld.
De dikke platen verlaten de eindwalstuigen als banden.
De banden worden met waterstralen onder lage druk gekoeld tot de juiste opwikkel-temperatuur bereikt is. Daarna worden ze opgewikkeld op 1 van de 3 haspels tot rollen. De opgewikkelde rol wordt dan van de haspel genomen, gekanteld d.m.v. een kipstoel en op een transportketting geplaatst. Daarop wordt de rol afgevoerd naar de warmbandafwerking. In de warmbandafwerking wordt het warmgewalste staal, dat als rol verkocht wordt, klant-klaar gemaakt, verpakt en verzonden. Indien het staal als plaat verkocht wordt, dan wordt de rol in de warmbandafwerking op breedte en lengte geknipt tot platen. Deze worden op hun beurt gevlakt, gecon- troleerd op eventuele fouten, gestapeld, verpakt en verzonden.
Fig. 6 Warmbandafwerking
Het project waaraan ik tijdens mijn stage ga werken is: het automatiseren van de ingave, verwerking en raportage van waardeparameters. Deze parameters werden gebruikt bij het bepalen van de performantie van de afdeling. Samen met de gegevens van de andere produkte afdelingen ontstaat zo een goed beeld over de prestaties van de onderlinge afdelingen in kader van het IKS2-project (Interne Kwaliteitszorg Sidmar).
Deze waardeparameters komen van alle verschillende sekties binnen de Warnwals en betreffen bjivoorbeeld veiligheid,…. De verantwoordelijke personen voor deze cijfers gaven ze op papier aan de Heer Debal die ze dan invoerde in een spreadsheet. Vervolgens werden hiervan een aantal grafieken en lijsten aan het verantwoordelijke de leiding en het afdelingshoofd.
Als eerste zal de database worden aangemaakt moeten worden dit zal gebeuren met Microsoft Acces 97. Vervolgens zullen met Microsoft Visual Basic 5.0 Enterprise Edition de AciveX objects gemaakt worden. Als laatste moeten de Web-paginas gemaakt worden, dit zal hoofdzakkelijk gebeuren met Microsoft Frontpage 97. Het testen zal over het algemeen naast elkaar gebeuren dat wil zeggen
Internet Explorer om de client kant te simuleren, VisualBasic om de ActiveX objecten te debuggen bij ongewenste resultaten op de intra-net paginas. Daarnaast wordt Acces gebruikt om de queries aantepassen.
De intranet-server, Microsoft's Internet Information Server 3.0 is al operationeel, het aanpassen/veranderen van de instellingen van de server is niet nodig en behoort ook niet tot het project.
De bedoeling van het project is dat de ingave, verwerking en raportage via het intranet van de afdeling gaan. Hiervoor is het nodig dat de waardeparmeters in een database komen te staan welk via DAO door in Visual Basic gemaakte ActiveX objecten aangesproken kunnen worden die op hun beurt weer door het ISAPI Filter kunnen worden aangesproken door middel van de COM interfase. De ISAPI communiceert op zijn beurt met de Server via CGI. En als laatste communiceert met de CLIENT via HTTP.
HTTP = Hyper Text Transfer Protocol
CGI = Common Gate Way Interface
ISAPI = Inter Server Application Program Interface
COM = Common Object Modelling
DAO = Data Acces Object
Explorer
de architectuurde interactiviteit: |
|
algemeen:
|
|
|
applicaties |
|
|
Figuur B De werking van webAction |
|
algemeen:
|
|
|
hoe het werkt:
|
|
algemeen |
|
|
|
|
|
De methode van aanpak van het project was aan de hand van prototyping. Dit houdt in dat de normale project weg die gevolgde wordt bij het ontwerpen van software namelijk; definieren, coderen en testen, niet opgaat het is namelijk een continu proces waarbij na het testen weer defineren, coderen en testen volgt. Het grote voordeel hiervan is dat er veel sneller getest kan worden en de verandering die gemaakt moeten worden aan het eind van de test minder ingrijpen zullen zijn. Een bij komend voordeel is dat het programma als het ware "evolueert" tot een goedsamenhangend geheel. Een nadeel is wel dat van een zeer gedetailleerde planning voor het ontwikkelprocess geen plaats is aangezien er veel eerder in het project al dusdanige aanpassing gemaakt zullen worden dat de planning simpel weg niet meer aantehouden is.
Voor het project zijn eerst twee databases gedefinieerd, een voor het inloggen en een voor de applicatie. Beide databases zijn in Acces gedefineerd. De ene database bevat de IKS2-gegevens die eerst in Excel-werkboek waren aangemaakt. De andere database, Login bevat de gegevens over de gebruikers zoals onderandere welk deel van de applicatie zij wel of niet mogen gebruiken. Deze database is zo opgezet dat hij "gerecyckeld" kan worden bij andere toepassingen. Een nadeel hiervan is dat we alles nu al vast leggen en daar in de toekomst rekening mee moeten houden. Een voordeel is dat het ontwikkeltijd spaart bij een volgend project.
De Login database met de releties en de attributen
Zoals in de afbeelding van de Login database te zien is
hebben we tbMembership en tblPermissions toegevoegd
om te voorkomen dat er veel-op-veel relaties voor komen
hebben we de database dus genormaliseerd.
Ook is nu goed te zien dat de we gekozen hebben om de
gebruikers per groep rechten te geven en niet per persoon
dit vanwege het feit dat dit makkelijker is in het gebruik. Als er nu bijvoorbeeld een applicatie toegevoegd moet worden dan hoeft dit niet honderd keer voor honderd gebruikers appart zijn permissies te veranderen. Maar hoeft dit maar een keer voor de gehele groep te gebeuren.
Ook bevat de database een hele groot aantal queries zoals die hiernaast zijn weergegeven. De vier standaard hoofdqueries zijn alle vier aanwezig:
Ook is te zien dat bij de delte querries voor een delete van Members of Permissions er meerdere mogelijkheden zijn. Dit is gedaan om de mogelijkheid op tehouden een user of een group uit een de membership tabel te verwijderen met allen de user of group-id als selectie criteria.
Ook is te zien dat er drie vershillende soorten select zijn voor de Membership tabel. Zo is er de mogelijkheid om bij de selectie van een membership een group, een user of beide als selectie criteria op tegeven.
Ook de IKS2-database is net als de Login-database genormaliseerd, zodat er geen veel-op-veel releaties voorkomen.
Erg opvallend is ook tblMaand waarbij we gekozen hebben voor een aanduiding van de maanden om drie verschillende manieren namelijk in cijfers, in het kort en in het lang. Dit heeft als voordeel dat we niet gebonden zijn aan een standaard uitdrukking voor een maand en we kunne zo mekkelijk variatie aan brengen. Ook is hier te zien dat bij iedere Parameter een User hoort, deze user is de verantwoordelijke persoon voor die bepaalde parameter. Later in het programma zullen we parameters gaan selecteren aan de hand van user, sektie en categorie. Bij de weergave van de waarden gaan we selecteren aan de hand van de param en het jaartal, er zal dan van een heel jaar elke maand met zijn waarde worden weergegeven.
Net als bij Login zijn de vierstandaard queris aanwezig. Zo is er qdelCategorie welke een categorie verwijderd aan de hand van diens ID. Ook is er een speciale querrie namelijk qmkCategorie. Deze Categorie maakt een tabel Categorie aan.
Voor een uitgebreider overzicht van de databases verwijs ik naar de bijlagen
Standaard naamgeving van queries
De naamgeving van queries is samengesteld uit een prefix en een fuctionele naam. De functionele naam bevat tevens de tabelnaam beginnend met een hoofdletter. De prefix is vastgelegd in functie van de actie en wordt steeds in kleine letters weergegeven. De standaard naamgeving is afkomstig van de Microsoft Technet CD. Bij het programmeren in Visual Basic zullen we ook daar de standaard naamgeving handhaven. Het positieve gevolg van het streng aanhouden van deze standaard naamgeving is dat de leesbaarheid van de code vergroot wordt.
De applicatie bestaat uit twee onderdelen namelijk het Login gedeelte en het IKS2 gedeelte. Alvorens de gebruiker een onderdeel van de applicatie kan gebruiken zal hij moeten inloggen op de Warmwals site. Vervolgens wordt dan bepaalt welk applicaties hij wel en niet mag gebruiken. De programmas worden in Visual Basic geschreven. De programmas gebruiken de database-bestanden Login en IKS2 voor hun gegevens bewerkingen. De programmas worden als ActiveX objecten
aangemaakt.
Het programma Login bevat allen ActiveX klassen. Deze klassen hebben alle functionaliteit om de eisen die aan Login worden gesteld inzich. Ook is de klasse classTools toegevoegd deze is nodig om de speciale functionaliteit die WebAction biedt aan te kunnen spreken.
clsLogin is de eerste klasse die aangesproken wordt bij het inloggen. Hij checkt of de UserID en het Password kloppen met wat in de Login database staat. Als alles klopt wordt clsApp aangeroepen anders wordt een foutmeleding gegenereerd.
In clsApp wordt met database Login gekeken welke applicaties de gebruiker mag gebruiken. De klasse Environment is een klasse die enkel geebruikt wordt bij het testen, hij bevat een functie die een boel gegevens van het operatingsystem en het netwerk bekend maakt. De klassen NotGranted, Granted en Revoked zijn alleen beschikbaar voor de administrator en geeft de gegevens over de verschillende gebruikers inzake de toegangsrechten. Tot slot is er de clsNewUser welke gebruikt wordt om een nieuwe gebruiker toe toevoegen.
HTML-Objects
HTML-object is een klasse die gebaseerd is op de HTML reference voor Microsoft Internet Explorer 3.0.
Voor elke tag uit de HTML-reference is er een klasse met de naam van die tag. Die klassen hebben op hun beurt weer voor elke attributes een let en een get property zodat er van gelezen en naar geschreven kan worden. Verder bevat elke klasse een functie Special. Deze functie Special genereert de HTML code die bij zo'n tag hoort.
De bedoeling van deze klasse was dat met het aanroepen van een paar functies met uit deze klasse je heel simpel een redelijk goede dynamische internetpagina zou kunnen genereren.
Door tijd gebrek hebben deze klasse jammer genoeg niet in gebruik kunnen nemen. In toekomstige projecten zal deze klasse waarschijnlijk wel gebruikt worden, het geen tot grote tijdspesparingen kan leiden.
Het programma IKS2 bevat alle functionaliteit die getoond gaat worden aan de gebruiker. Zo is er de klasse clsReportShowGraph welk laat de taak heeft de html-code te genereren om de grafiek met de geselecteerde waardemeter weertegeven in de browser. In IKS2 worden dus de HTML –codes voor de bepaalde paginas gegenereed. Tevens verwerkt IKS2 de inkomende variablen van de WebAction. Hij genereert een foutmelding als de variabelen niet voldoen aan de gestelde eisen bijvoorbeeld het maximum wordt overschreden.
Het object IKS2Acces bevat alles wat toegelaten is op de database. Als IKS2 een bewerking met de database moet doen dan spreekt hij daarvoor de juist procedure in IKS2Acces aan. Deze procedure in IKS2Acces gaat dan vervolgens de gevraagde actie uitvoeren op de IKS2 database. Als er
bijvoorbeeld een verandering aan de tabel User moet worden gemaakt dan zal in IKS2 de aanroep clsUSER.Update(parameters) in IKS2Acces klasse clsUser en procedure Update aanroepen welke vervolgens met de overgedragen parameters de gevraagde update in de database zal aanbrengen. Dit gebeurt door dat de parameters weer doorgegeven worden aan de vooraf gedefineerde querry qupdUser. Voor een uitgebreidere beschrijving van de processen verwijs ik naar de programma diagrammen en de source code.
Standaard naamgeving in Visual Basic
De naamgeving van van klassen, forms, modules en andere objecten die in forms gebruikt worden in Visual Basic net als bij de queries in Acces samengesteld uit een prefix en een fuctionele naam. De functionele naam bevat tevens de klassenaam beginnend met een hoofdletter. De prefix is vastgelegd in functie van de soort klasse en wordt steeds in kleine letters weergegeven. De standaard naamgeving is afkomstig van de Microsoft Technet CD. Net als bij de het aanhouden van deze naamgeving in Acces zal het erin Visual Basic voor zorgen dat de gemaakte code leesbaarder wordt. Voor meer prefixes als in het hier bovenstaande tabelletje verwijs ik naar de Technet CD’s of naar de documentatie die over dit onderwerp in het bezit is van ondergetekende.
Na het programmeren van de verschillende programmas en objecten moest er worden getest. Aangezien we met ActiveX objecten wekten konden we de test applicaties gewoon in Visual Basic schrijven en moesten we niet gelijk met HTML gaan testen.
Login hebben we tegelijk met IKS2getest als een soort schaduw applictie die niet via het intranet werkt maar local als gewone windows applicatie. Hiernaast is een diagram te zien van alle forms die we nodig hebben om Login en IKS2Acces te Testen.
Alle mogelijke handelingen die straks met de intranet-applicatie op de Database kunnen worden gedaan moeten getest worden met deze applicatie. Het testen van Login gebeurt als eerste met twee keer Visual Basic geopend in de ene window laden we Login en in de andere window laden we IKS2AccesTest. Deze laatste is nog niet verder uitgewerkt dan het Inlog gedeelte, zodat we geen problemen krijgen met het aanroepen van procedures die we nog niet willen testen. Als eerste wordt Login gerund met een full compile, daarna pas wordt IKS2AccesTest gerund met een full compile. Als er nu een error optreed in Login dan zal Visual Basic pauseren met runnen. Vervolgens schakelt hij automatisch over naar het onderdeel welke de fout veroorzaakt. De regel waarin de fout optrad wordt geaccentueerd en de foutmelding wordt weergegeven. Na het testen van Login wordt deze gecompileerd en aangemaakt, waardoor het programma in de vanzelf in de register van windows komt te staan. Als er nu een programma naar Login vraagt wordt dit programma automatische door verwezen naar de plaats die in het register staat aangegeven.
Het testen van IKS2 gedeelte gebeurt op de zelfde manier. Twee windows met Visual Basic, een met IKS2AccesTest en de andere met IKS2Acces. Ook hier wordt IKS2AccesTest als laatste gerund. Het verdere process is het zelfd als bij Login.
Bij het testen is er intensief gebruik gemaakt van "Error Trapping" en Loggen. We hebben hiervoor een ActiveX object gebruikt dat AppLogger heet. Deze AppLogger maakt circulaire bestanden aan dat wil zeggen als het bestand vol is begint hij weer aan het begin met schrijven. Voorelke klasse hebben wij een eigen log-bestand gemaakt. Elke keer als een klasse wordt aangroepen worden in het bijbehorende log bestand de volgende dingen weggeschreven:
-Tijd + Class Initialize
-Tijd + Class Terminate
-Einde van het Loggen
in een log-bestand ziet dat er bijvoorbeeld als volgt uit:
7:41:57 AM - > Start Class Initialize
7:42:17 AM - 1998-05-06 07:42:17 > Class_Terminate: Close logfile:
AppLogger Logfile ended 7:42:17 AM 06.05.98
Om nu de errors te "Trappen" is er in elke procedure van elke klasse een statement toegevoegd. Treed er nu een fout op dan springt het programma naar dit statement en wordt de error samen met de tijd weggeschreven naar het log-bestand van die klasse. Dat ziet er dan als volgt uit:
2:03:48 PM - 13.05.98 2:03:48 PM > Start Class Initialize
2:03:48 PM - ! Class_Initialize: Item not found in this collection.
2:04:09 PM - > Class_Terminate: Close logfile:
Deze error houdt in dat de een element waar een bewerking op gedaan moet worden niet voorkomt in de database.
Het statement voor dat we gebruikt hebben voor deze "Error Trapping" ziet er als volgt uit:
Exit_Function:
Exit Function
ErrorTrap:
log.WriteEventToLogFile Error$
Resume Exit_Function
End Function
Als er een error voorkomt in de klasse wordt er naar ErrorTrap gesprongen deze schrijf dan de erro weg en vervolgens wordt er teruggesprongen naar Exit_Function.
Bij het testen van IKS2Acces en Login is dit "Error Trappen" nog niet erg belangrijk omdat we met Visual Basic twee of meerdere objecten tegelijk kunnen debuggen. Bij het debuggen van IKS2 aan de had van testruns van de intranet applicatie is dit wel heel handig aangezien we dan niet met twee runnende objecten kunnen werken maar alleen met de gecompileerde en aangemaakte versie.
Nadat het testen van Login en IKS2Acces, moest de intranet applicatie geschreven worden. Eerst moest er een Login pagina gemaakt worden waarop geregistreerde users konden inloggen. Ook moest er een mogelijkheid zijn voor nieuwe users om zich aan te melden. De paginas die hiervoor gemaakt moesten worden zijn met Microsoft Frontpage aangemaakt. Dit is alleen met deze paginas mogelijk en niet met de volgende omdat de verder applicatie werkt met dynamische internet paginas. Deze paginas worden aangemaakt door IKS2 en zijn daarom niet met Frontpage aan te maken.
Deze pagina zit vrij simpel in elkaar, hij bevat namelijk een HTML-form met twee HTML-input boxen. In die twee input boxen moet de user zijn userid en password ingeven. Voor een schema van de parameter overdracht verwijs ik naar bijlage C. Klopt alles dan wordt hij door gestuurd naar de applicatie pagina waarop hij de voor hem toegangkelijke applicaties tezien krijgt. Voor een schematisch programma overzicht verwijs ik naar Bijlage D. Als er iets niet klopt wordt de foutpagina getoond met daarop de bijbehorende fout. Was alleen het password verkeerd dan wordt er automatisch teruggekeer naar de Login pagina. Was ook de userID fout dan wordt door gegaan naar de Newuser pagina. Op deze pagina kan de onbekende gebruiker zich aanmelden. Ook op deze pagina wordt met een form gewerkt, het verschil met de andere pagina is dat er nu een HTML-input boxen zijn.
IKS2 waardemeters
De IKS2 intranet applicatie die wij geschreven hebben is opgesplitst in drie onderdelen namelijk:
Het eerste deel van de applicatie namelijk rapportering waardermeters is voor ieder die inlogt toegankelijk zijn de ander twee onderdelen van de applicatie moeten echter alleen toegankelijk zijn voor de mensen die de IKS2 waardemeters invoeren en veranderen. Dit wordt bereikt door dat inde IKS2 database ook is aangegeven welke gebruikers wat mogen. Als er nu een gebruiker inlogt dan zullen alleen de hyperlinks naar die delen van de applicatie verschijnen waar tot hij toegang dient te hebben.
Management is het gedeelte van de toepassing dat eigenlijk door het minst aantal personen bebruikt zal worden. De taak van deze toepassing ligt in het toevoegen van nieuwe, verwijderen van en veranderen van de gegevens over waardemeters, de parameters. Dit deel van de toepassing laad bij het activeren alle verschillende parameters in een listbox, zodat de gebruiker die parameter kan kiezen die hij wil veranderen of verwijderen. Ook kan de gebruiker ervoor kiezen om een nieuwe parameter in tebrengen. Als de gebruiker ervoor kiest de gekozen parameter te verwijderen dan wordt alvoorens de parameter wordt verwijdert eerst alle gegevens van die parameter nog een keer getoond op een pagina en er wordt om een bevestiging gevraagd. Kiest de gebruiker dan voor verwijderen dan wordt de parameter uit de database verwijdert, is dit gelukt dan zal er door IKS2 een HTML-pagina met een bevestigende tekst worden gegenereerd. Is het niet gelukt dan zal IKS2 aangeven welke error er is opgetreden. Vervolgens wordt weer terug gekeerd naar de start pagina van management waardemeters.
Als de gebruiker kiest voor het veranderen van de gekozen parameter dan zal de IKS2 een pagina genereren met alle gegevens van die parameter maar nu in inputboxes en listboxes met de verschillende hoofdwaarden (verandwoordelijke, sektie en categorie), zodat de gebruiker de waarden kan veranderen. Heeft de gebruiker de waarden van de parameter verandert en gekozen om de verandering door tevoeren dan zal IKS2 de veranderingen doorvoeren en een HTML-pagina genereren die aangeeft of alle parameters klopten en of de verandering zijn door gevoerd. De applicatie keert terug naar het begin van management.
De laatste functie die dit deel van de applicatie heeft is het toevoegen van een nieuwe parameter. De gebruiker krijgt nu weer voor alle verschillende waarden van parameters inputboxes en listboxes te zien, maar deze zijn leeg zodat hij er een totaal nieuwe parameter kan invoeren. Als de gebruiker besloten heeft de parameter toetevoegen dan zal IKS2 die opdracht uitvoeren en een HTML-pagina genereren die aangeeft of het gelukt Is en zo ja wat de ID is van de nieuwe parameter.
Dit deel van de applicatie is, zoals de naam ervan al suggereerd voor het ingeven van waardemeters. Bij het start van dit deel van de applicatie zal IKS2 een lijst genereren met alle verantwoordelijke, de sekties, de categorieen en het jaartal. De gebruiker selecteerd dan een gebruiker, vervolgens zal IKS2 met de gegeven waarden een lijstje samenstellen van alle waardemeters die er voor de geselecteerde waarden in dat gegeven jaar zijn. De waarden worden weergegeven per maand in een inputbox. Zo kan de gebruiker reeds bestaande waarden veranderen en nog niet bestaande waarden ingeven. De andere gegevens over de waardemeter kan de gebruiker niet veranderen en zijn dus gewoon weergegeven. Als de gebruiker de veranderingen/nieuwe ingaven wil doorvoeren zal IKS2 de gegevens voor hem checken, dat wil zeggen er wordt gekeken of de ingegeven waarden tussen de minimum en maximum waarde van deze waardemeter ligt is dat niet het geval dan zal er een HTML-pagina gegenereerd worden welk dit aangeeft. Klopt alles verder dan zal IKS2 per maand de ingegeven waarden in de database inbrengen. Er zal een HTML-pagina gegenereerd worden die aangeeft welke maand met succes zijn ingevoerd. Vervlogens keert de applicatie automatisch terug naar de startpagina van dit deel van de applicatie
Rapportering waardemeters is dat gedeelte van de applicatie die ervoor zorgt dat er een goede, duidelijk en eenduidige weergave van de waardemeters plaatsvindt. De gebruiker kan zeggen welke waardemeter hij van welk jaar veergegeven wil zien. IKS2 zal alle maandwaarden van de gekozen waardemeter voor dat jaar uit de database ophalen en dan bet behulp van het activeX control Olectra Chart een mooie weergave maken in de vorm van een staafdiagram. Hoewel we eerst van plan waren dit met de activeX control ieChart te doen, bleek deze niet genoeg capaciteiten te bezitten, bovendien zou de Olectra Chart eenvoudiger in het gebruik zijn. Dit laatste bleek echter achteraf tegen te vallen.
Testen
Deze test procedure bij de intranet applicatie is totaal anders als bij de testprogrammas. Het debuggen zou volgens de handleiding van WebAction kunnen gebeuren met een in Visual Basic runnened ActiveX object, dus zeg maar real-time. Bij onze versie van WebAction werkte deze functie echter niet. Het gevolg hiervan was dat elke keer als er zich een error voor deed, Internet Explorer een foutmelding gaf waar we niets mee konden doen. Door dit probleem waren we gedwongen de ErrorTrapping, zoals die beschreven staat in het Hoofdstuk Testen toepassen. Ook waren we genoodzaakt elke keer als we veranderingen hadden aangebracht opnieuw een full compile te doen en het programma laten aanmaken. Een bij komend nadeel aan deze onhandige debug methode was dat elke keer als we een nieuwe build lieten uitvoeren we vooraf dat bewuste programma moesten uit zetten, ook wel bevrijden genoemd. Hiervoor had WebAction gelukkig een handige link bij het programma meegestuurd, deze link stelde ons instaat de objeceten snel en gemakkelijk te bevrijden.
Relationships
Table: tblApplication
Columns
Name Type Size
ID Number (Long) 4
Name Text 10
Description Text 50
Anchor Text 50
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblGroup
Columns
Name Type Size
ID Number (Long) 4
Group Text 10
Description Text 50
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblMembership
Columns
Name Type Size
ID Number (Long) 4
ID_User Number (Long) 4
ID_Group Number (Long) 4
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
ID_Group 1
Fields: ID_Group, Ascending
ID_User 1
Fields: ID_User, Ascending
PrimaryKey 1
Fields: ID, Ascending
tblGrouptblMembership 1
Fields: ID_Group, Ascending
tblUSERtblMembership 1
Fields: ID_User, Ascending
Table: tblPermissions
Columns
Name Type Size
ID Number (Long) 4
ID_App Number (Long) 4
ID_Group Number (Long) 4
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
ID_App 1
Fields: ID_App, Ascending
ID_Group 1
Fields: ID_Group, Ascending
PrimaryKey 1
Fields: ID, Ascending
tblApplicationtblPermissions 1
Fields: ID_App, Ascending
tblGrouptblPermissions 1
Fields: ID_Group, Ascending
Table: tblUSER
Columns
Name Type Size
ID Number (Long) 4
Userid Text 7
FirstName Text 50
LastName Text 50
EmplNr Text 6
Department Text 10
Company Text 50
Email Text 50
Phone Text 50
Fax Text 50
Password Text 6
Dt_Creation Date/Time 8
Dt_Revoke Date/Time 8
Dt_Grant Date/Time 8
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Userid 1
Fields: Userid, Ascending
Properties
Date Created: 5/14/98 2:12:54 PM Def. Updatable: True
FailOnError: False Last Updated: 5/14/98 2:12:55 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xID Long;
DELETE tblApplication.ID
FROM tblApplication
WHERE (((tblApplication.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)I
Properties
Date Created: 5/12/98 9:00:43 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 9:15:12 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xGroupid Long;
DELETE tblGroup.ID
FROM tblGroup
WHERE (((tblGroup.ID)=[xGroupid]));
Query Parameters
Name Type
xGroupid Number (Long)
Properties
Date Created: 5/12/98 11:50:21 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:22:07 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDGroup Long;
DELETE tblMembership.ID_Group
FROM tblMembership
WHERE (((tblMembership.ID_Group)=[xIDGroup]));
Query Parameters
Name Type
xIDGroup Number (Long)
Properties
Date Created: 5/11/98 10:36:05 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:05:15 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDUser Long, xIDGroup Long;
DELETE tblMembership.ID_User, tblMembership.ID_Group
FROM tblMembership
WHERE (((tblMembership.ID_User)=[xIDUser]) AND ((tblMembership.ID_Group)=[xIDGroup]));
Query Parameters
Name Type
xIDUser Number (Long)
xIDGroup Number (Long
Properties
Date Created: 5/12/98 11:50:36 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:05:44 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDUser Long;
DELETE tblMembership.ID_User
FROM tblMembership
WHERE (((tblMembership.ID_User)=[xIDUser]));
Query Parameters
Name Type
xIDUser Number (Long)
Properties
Date Created: 5/12/98 11:31:01 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:33:43 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDApp Long;
DELETE tblPermissions.ID_App
FROM tblPermissions
WHERE (((tblPermissions.ID_App)=[xIDApp]));
Query Parameters
Name Type
xIDApp Number (Long)
Properties
Date Created: 5/12/98 11:26:06 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:34:49 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDGroup Long;
DELETE tblPermissions.ID_Group
FROM tblPermissions
WHERE (((tblPermissions.ID_Group)=[xIDGroup]));
Query Parameters
Name Type
xIDGroup Number (Long)
Properties
Date Created: 5/12/98 9:31:05 AM Def. Updatable: True
FailOnError: False Last Updated: 5/12/98 12:35:22 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xIDApp Short, xIDGroup Long;
DELETE tblPermissions.ID_App, tblPermissions.ID_Group
FROM tblPermissions
WHERE (((tblPermissions.ID_App)=[xIDApp]) AND ((tblPermissions.ID_Group)=[xIDGroup]));
Query Parameters
Name Type
xIDApp Number (Integer)
xIDGroup Number (Long)
Query: qdelUser
Properties
Date Created: 5/11/98 10:39:52 AM Def. Updatable: True
FailOnError: False Last Updated: 5/11/98 10:39:52 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xid Long;
DELETE tblUSER.ID
FROM tblUSER
WHERE (((tblUSER.ID)=[xid]));
Query Parameters
Name Type
xid Number (Long)
Properties
Date Created: 5/14/98 1:53:50 PM Def. Updatable: True
Last Updated: 5/14/98 1:54:20 PM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xName Text, xDescription Text, xAnchor Text;
INSERT INTO tblApplication ( Name, Description, Anchor )
SELECT [xName] AS Expr1, [xDescription] AS Expr2, [xAnchor] AS Expr3;
Query Parameters
Name Type
xName Text
xDescription Text
xAnchor Text
Properties
Date Created: 5/12/98 8:59:10 AM Def. Updatable: True
Last Updated: 5/12/98 12:11:53 PM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xGroup Text, xDescription Text;
INSERT INTO tblGroup ( [Group], Description )
SELECT [xGroup], [xDescription];
Query Parameters
Name Type
xGroup Text
xDescription Text
Properties
Date Created: 5/12/98 9:34:19 AM Def. Updatable: True
Last Updated: 5/12/98 12:11:55 PM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xIDUser Text, xIDGroup Text;
INSERT INTO tblMembership ( ID_User, ID_Group )
SELECT [xIDUser], [xIDGroup];
Query Parameters
Name Type
xIDUser Text
xIDGroup Text
Properties
Date Created: 3/31/98 6:01:17 PM Def. Updatable: True
Last Updated: 4/1/98 10:41:30 AM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xUserid Text, xPassword Text, xCompNumber Text, xCompany Text, xDepartment Text,
xEmail Text, xPhone Text, xFax Text, xFirstName Text, xLastName Text;
INSERT INTO tblUSER ( Userid, Password, EmplNr, Company, Department, Email, Phone, Fax,
FirstName, LastName )
SELECT [xUserid], [xPassword], [xCompNumber], [xCompany], [xDepartment], [xEmail], [xPhone],
[xFax], [xFirstName], [xLastName];
Query Parameters
Name Type
xUserid Text
xPassword Text
xCompNumber Text
xCompany Text
xDepartment Text
xEmail Text
xPhone Text
xFax Text
xFirstName Text
xLastName Text
Properties
Date Created: 5/12/98 11:34:49 AM Def. Updatable: True
Last Updated: 5/12/98 11:44:12 AM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xIDApp Long, xIDGroup Long;
INSERT INTO tblPermissions ( ID_App, ID_Group )
SELECT [xIDApp], [xIDGroup];
Query Parameters
Name Type
xIDApp Number (Long)
xIDGroup Number (Long)
Properties
Date Created: 5/8/98 4:37:27 PM Def. Updatable: True
Last Updated: 5/13/98 9:48:39 AM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xUserid Text, xPassword Text;
SELECT tblUSER.Userid, tblUSER.Password, tblUSER.ID, tblUSER.FirstName, tblUSER.LastName,
tblUSER.EmplNr, tblUSER.Department, tblUSER.Company, tblUSER.Email, tblUSER.Phone,
tblUSER.Fax, tblUSER.Dt_Creation, tblUSER.Dt_Revoke, tblUSER.Dt_Grant
FROM tblUSER
WHERE (((tblUSER.Userid)=[xUserid]) AND ((tblUSER.Password)=[xPassword]));
Query Parameters
Name Type
xUserid Text
xPassword Text
Columns
Name Type Size
Userid Text 7
Password Text 6
ID Number (Long) 4
FirstName Text 50
LastName Text 50
EmplNr Text 6
Department Text 10
Company Text 50
Email Text 50
Phone Text 50
Fax Text 50
Dt_Creation Date/Time 8
Dt_Revoke Date/Time 8
Dt_Grant Date/Time 8
Properties
Date Created: 4/2/98 4:09:50 PM Def. Updatable: True
Last Updated: 4/2/98 4:10:01 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
SELECT tblUSER.ID, tblUSER.Userid, tblUSER.FirstName, tblUSER.LastName, tblUSER.Email,
tblUSER.Phone, tblUSER.Fax, tblUSER.Dt_Creation
FROM tblUSER
WHERE (((tblUSER.Dt_Grant) Is Not Null) AND ((tblUSER.Dt_Revoke) Is Null));
Columns
Name Type Size
ID Number (Long) 4
Userid Text 7
FirstName Text 50
LastName Text 50
Email Text 50
Phone Text 50
Fax Text 50
Dt_Creation Date/Time 8
Properties
Date Created: 5/11/98 10:11:37 AM Def. Updatable: True
Last Updated: 5/11/98 10:12:12 AM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xUserid Text, xPassword Text;
SELECT tblUSER.ID, tblUSER.Userid, tblUSER.Password, tblGroup.ID, tblGroup.Group
FROM tblUSER INNER JOIN (tblGroup INNER JOIN tblMembership ON tblGroup.ID =
tblMembership.ID_Group) ON tblUSER.ID = tblMembership.ID_User
WHERE (((tblUSER.Userid)=[xUserid]) AND ((tblUSER.Password)=[xPassword]) AND ((tblGroup.ID)=1));
Query Parameters
Name Type
xUserid Text
xPassword Text
Columns
Name Type Size
tblUSER.ID Number (Long) 4
Userid Text 7
Password Text 6
tblGroup.ID Number (Long) 4
Group Text 10
Properties
Date Created: 4/2/98 2:24:37 PM Def. Updatable: True
Last Updated: 4/2/98 2:24:53 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
SELECT tblUSER.ID, tblUSER.Userid, tblGroup.ID, tblGroup.Group
FROM tblUSER INNER JOIN (tblGroup INNER JOIN tblMembership ON tblGroup.ID =
tblMembership.ID_Group) ON tblUSER.ID = tblMembership.ID_User;
Columns
Name Type Size
tblUSER.ID Number (Long) 4
Userid Text 7
tblGroup.ID Number (Long) 4
Group Text 10
Properties
Date Created: 5/11/98 2:33:33 PM Def. Updatable: True
Last Updated: 5/11/98 2:34:57 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xIDUser Long;
SELECT tblGroup.ID, tblGroup.Group, tblGroup.Description
FROM tblUSER INNER JOIN (tblGroup INNER JOIN tblMembership ON tblGroup.ID =
tblMembership.ID_Group) ON tblUSER.ID = tblMembership.ID_User
WHERE (((tblUSER.ID)=[xIDUser]));
Query Parameters
Name Type
xIDUser Number (Long)
Columns
Name Type Size
ID Number (Long) 4
Group Text 10
Description Text 50
Properties
Date Created: 5/11/98 3:36:20 PM Def. Updatable: True
Last Updated: 5/11/98 3:40:08 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS XUserid Text;
SELECT tblMembership.ID_Group
FROM tblUSER INNER JOIN tblMembership ON tblUSER.ID = tblMembership.ID_User
WHERE (((tblUSER.Userid)=[xUserid]));
Query Parameters
Name Type
XUserid Text
Columns
Name Type Size
ID_Group Number (Long) 4
Properties
Date Created: 5/11/98 3:38:55 PM Def. Updatable: True
Last Updated: 5/11/98 4:26:44 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
SELECT tblGroup.ID, tblGroup.Group, tblGroup.Description, IsNull([ID_Group]) AS IsMember
FROM qselMemberShipUser1 RIGHT JOIN tblGroup ON qselMemberShipUser1.ID_Group = tblGroup.ID;
Query Parameters
Name Type
XUserid Text
Columns
Name Type Size
ID Number (Long) 4
Group Text 10
Description Text 50
IsMember Number (Integer) 2
Properties
Date Created: 4/2/98 2:26:00 PM Def. Updatable: True
Last Updated: 4/2/98 3:45:52 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
SELECT tblUSER.ID, tblUSER.Userid, tblUSER.FirstName, tblUSER.LastName, tblUSER.Email,
tblUSER.Phone, tblUSER.Fax, tblUSER.Dt_Creation
FROM tblUSER
WHERE (((tblUSER.Dt_Grant) Is Null) AND ((tblUSER.Dt_Revoke) Is Null));
Columns
Name Type Size
ID Number (Long) 4
Userid Text 7
FirstName Text 50
LastName Text 50
Email Text 50
Phone Text 50
Fax Text 50
Dt_Creation Date/Time 8
Properties
Date Created: 4/2/98 4:10:14 PM Def. Updatable: True
Last Updated: 4/2/98 4:10:24 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
SELECT tblUSER.ID, tblUSER.Userid, tblUSER.FirstName, tblUSER.LastName, tblUSER.Email,
tblUSER.Phone, tblUSER.Fax, tblUSER.Dt_Creation
FROM tblUSER
WHERE (((tblUSER.Dt_Revoke) Is Not Null));
Columns
Name Type Size
ID Number (Long) 4
Userid Text 7
FirstName Text 50
LastName Text 50
Email Text 50
Phone Text 50
Fax Text 50
Dt_Creation Date/Time 8
Properties
Date Created: 5/25/98 4:53:07 PM Def. Updatable: True
Last Updated: 5/26/98 12:12:33 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xUserid Text, xAppDesc Text;
SELECT tblUSER.Userid, tblApplication.Description
FROM tblUSER INNER JOIN ((tblGroup INNER JOIN tblMembership ON tblGroup.ID =
tblMembership.ID_Group) INNER JOIN (tblApplication INNER JOIN tblPermissions ON tblApplication.ID =
tblPermissions.ID_App) ON tblGroup.ID = tblPermissions.ID_Group) ON tblUSER.ID =
tblMembership.ID_User
WHERE (((tblUSER.Userid)=[xUserid]) AND ((tblApplication.Description)=[xAppDesc]) AND
((IsNull([Dt_Revoke]))=True) AND ((IsNull([Dt_Grant]))=False));
Query Parameters
Name Type
xUserid Text
xAppDesc Text
Columns
Name Type Size
Userid Text 7
Description Text 50
Properties
Date Created: 4/2/98 2:31:23 PM Def. Updatable: True
Last Updated: 4/2/98 3:36:53 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xUserid Text;
SELECT tblApplication.ID, tblApplication.Name, tblApplication.Description, tblApplication.Anchor,
tblUSER.FirstName, tblUSER.LastName, tblUSER.Dt_Grant
FROM tblUSER INNER JOIN ((tblGroup INNER JOIN tblMembership ON tblGroup.ID =
tblMembership.ID_Group) INNER JOIN (tblApplication INNER JOIN tblPermissions ON tblApplication.ID =
tblPermissions.ID_App) ON tblGroup.ID = tblPermissions.ID_Group) ON tblUSER.ID =
tblMembership.ID_User
WHERE (((tblUSER.Userid)=[xUserid]) AND (Not (tblUSER.Dt_Grant) Is Null));
Query Parameters
Name Type
xUserid Text
Columns
Name Type Size
ID Number (Long) 4
Name Text 10
Description Text 50
Anchor Text 50
FirstName Text 50
LastName Text 50
Dt_Grant Date/Time 8
Properties
Date Created: 5/11/98 11:00:15 AM Def. Updatable: True
FailOnError: False Last Updated: 5/11/98 11:01:47 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xid Long;
UPDATE tblUSER SET tblUSER.Dt_Grant = Now(), tblUSER.Dt_Revoke = Null
WHERE (((tblUSER.ID)=[xid]));
Query Parameters
Name Type
xid Number (Long)
Properties
Date Created: 4/1/98 11:30:30 AM Def. Updatable: True
Last Updated: 4/1/98 11:30:30 AM MaxRecords: 0
ODBCTimeout: 60 Record Locks: No Locks
Records Affected: 0 ReturnsRecords: True
Type: Update
SQL
PARAMETERS xuserid Text, xoldpassword Text, xnewpassword Text;
UPDATE tblUSER SET tblUSER.Password = [xnewpassword]
WHERE (((tblUSER.Userid)=[xuserid]) AND ((tblUSER.Password)=[xoldpassword]));
Query Parameters
Name Type
xuserid Text
xoldpassword Text
xnewpassword Text
Properties
Date Created: 5/11/98 11:29:21 AM Def. Updatable: True
FailOnError: False Last Updated: 5/11/98 11:34:54 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xUserid Text, [xNewPassword ] Text, xOldPassword Text;
UPDATE tblUSER SET tblUSER.Password = [xNewPassword]
WHERE (((tblUSER.Password)=[xOldPassword]) AND ((tblUSER.Userid)=[xUserid]));
Query Parameters
Name Type
xUserid Text
xNewPassword Text
xOldPassword Text
Properties
Date Created: 5/11/98 10:53:34 AM Def. Updatable: True
FailOnError: False Last Updated: 5/11/98 11:02:05 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xid Long;
UPDATE tblUSER SET tblUSER.Dt_Grant = Null, tblUSER.Dt_Revoke = Now()
WHERE (((tblUSER.ID)=[xid]));
Query Parameters
Name Type
xid Number (Long)
Columns
Name Type Size
ID Number (Long) 4
Omschrijf Text 50
Name Text 10
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblMAAND
Columns
Name Type Size
ID Number (Long) 4
MAANDKORT Text 20
MAANDNUM Number (Long) 4
MAANDLANG Text 50
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
MAANDNUM 1
Fields: MAANDNUM, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblPARAM
Columns
Name Type Size
ID Number (Long) 4
Name Text 10
Omschrijf Text 50
Max Number (Double) 8
Min Number (Double) 8
ID_USER Number (Long) 4
ID_SEKTIE Number (Long) 4
ID_CAT Number (Long) 4
Eh Text 15
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
ID_CAT 1
Fields: ID_CAT, Ascending
ID_SEKTIE 1
Fields: ID_SEKTIE, Ascending
ID_USER 1
Fields: ID_USER, Ascending
PrimaryKey 1
Fields: ID, Ascending
tblCATEGORIEtblPARAM 1
Fields: ID_CAT, Ascending
tblSEKTIEtblPARAM 1
Fields: ID_SEKTIE, Ascending
tblUSERtblPARAM 1
Fields: ID_USER, Ascending
Table: tblSEKTIE
Columns
Name Type Size
ID Number (Long) 4
NAME Text 20
Omschrijf Text 50
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblUSER
Columns
Name Type Size
ID Number (Long) 4
Name Text 50
Omschrijf Text 50
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
Table: tblWAARDE
Columns
Name Type Size
ID Number (Long) 4
ID_Param Number (Long) 4
Jaar Number (Integer) 2
Maand_ID Number (Long) 4
Waarde Number (Double) 8
Table Indexes
Name Number of Fields
ID 1
Fields: ID, Ascending
ID_Param 1
Fields: ID_Param, Ascending
Maand_ID 1
Fields: Maand_ID, Ascending
PrimaryKey 1
Fields: ID, Ascending
tblMAANDtblWAARDE 1
Fields: Maand_ID, Ascending
tblPARAMtblWAARDE 1
Fields: ID_Param, Ascending
Query: qdelCategorie
Properties
Date Created: 4/15/98 2:20:42 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:23:01 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xID Long;
DELETE tblCATEGORIE.ID
FROM tblCATEGORIE
WHERE (((tblCATEGORIE.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Properties
Date Created: 4/15/98 11:42:33 AM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 11:42:33 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xID Long;
DELETE tblPARAM.ID
FROM tblPARAM
WHERE (((tblPARAM.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Properties
Date Created: 4/15/98 2:51:28 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:51:28 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xID Long;
DELETE tblSEKTIE.ID
FROM tblSEKTIE
WHERE (((tblSEKTIE.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Properties
Date Created: 4/15/98 2:52:17 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:52:17 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Delete
UseTransaction: True
SQL
PARAMETERS xID Text;
DELETE tblUSER.ID
FROM tblUSER
WHERE (((tblUSER.ID)=[xID]));
Query Parameters
Name Type
xID Text
Properties
Date Created: 4/15/98 11:45:49 AM Def. Updatable: True
Last Updated: 4/15/98 11:45:49 AM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
PARAMETERS xName Text, xOmschrijf Text, xMax IEEEDouble, xMin Text, xID_USER Long,
xID_SEKTIE Long, xID_CAT Long, xEh Text;
INSERT INTO tblPARAM ( Name, Omschrijf, Max, Min, ID_USER, ID_SEKTIE, ID_CAT, Eh )
SELECT [xName] AS Expr1, [xOmschrijf] AS Expr2, [xMAX] AS Expr3, [xMin] AS Expr4, [xID_USER] AS
Expr5, [xID_SEKTIE] AS Expr6, [xID_CAT] AS Expr7, [Xeh] AS Expr8;
Query Parameters
Name Type
xName Text
xOmschrijf Text
xMax Number (Double)
xMin Text
xID_USER Number (Long)
xID_SEKTIE Number (Long)
xID_CAT Number (Long)
xEh Text
Properties
Date Created: 4/10/98 1:51:27 PM Def. Updatable: True
Last Updated: 4/10/98 3:20:16 PM MaxRecords: 0
ODBCTimeout: 60 Record Locks: Edited Record
Records Affected: 0 ReturnsRecords: True
Type: Append UseTransaction: True
SQL
INSERT INTO tblWAARDE ( ID_Param, Jaar, Waarde, Maand_ID )
SELECT tblPARAM.ID, 1997 AS Expr1, WaardenNu.JAN, tblMAAND.ID
FROM tblMAAND, WaardenNu INNER JOIN tblPARAM ON WaardenNu.IDENTIFICATIE =
tblPARAM.Name
WHERE (((tblMAAND.MAANDKORT)="JAN"));
Properties
Date Created: 4/10/98 3:28:05 PM Def. Updatable: True
Last Updated: 4/10/98 3:28:05 PM MaxRecords: 0
ODBCTimeout: 60 Record Locks: No Locks
Records Affected: 0 ReturnsRecords: True
Type: Make-table
SQL
SELECT DISTINCT Controle.TYPE INTO tblCategorie
FROM Controle;
Properties
Date Created: 4/15/98 2:07:12 PM Def. Updatable: True
Last Updated: 4/15/98 2:07:12 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xID Long;
SELECT tblCATEGORIE.Name, tblCATEGORIE.Omschrijving, tblCATEGORIE.ID
FROM tblCATEGORIE
WHERE (((tblCATEGORIE.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
tblCATEGORIE.Omschrijvin Text
Columns
Name Type Size
Name Text 10
Omschrijving Unknown 0
ID Number (Long) 4
Properties
Date Created: 4/15/98 2:43:32 PM Def. Updatable: True
Last Updated: 4/15/98 2:43:32 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xID Long;
SELECT tblMAAND.MAANDKORT, tblMAAND.MAANDNUM, tblMAAND.MAANDLANG, tblMAAND.ID
FROM tblMAAND
WHERE (((tblMAAND.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Columns
Name Type Size
MAANDKORT Text 20
MAANDNUM Number (Long) 4
MAANDLANG Text 50
ID Number (Long) 4
Properties
Date Created: 4/10/98 3:26:57 PM Def. Updatable: True
Last Updated: 4/10/98 3:26:57 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xUserid Text;
SELECT tblPARAM.ID, tblPARAM.Name, tblPARAM.Omschrijf, tblPARAM.ID_USER, tblUSER.Name,
tblUSER.Omschrijving
FROM tblUSER INNER JOIN tblPARAM ON tblUSER.ID = tblPARAM.ID_USER
WHERE (((tblUSER.Name)=[xUserid]));
Query Parameters
Name Type
xUserid Text
tblUSER.Omschrijving Text
Columns
Name Type Size
ID Number (Long) 4
tblPARAM.Name Text 10
Omschrijf Text 50
ID_USER Number (Long) 4
tblUSER.Name Text 50
Omschrijving Unknown 0
Properties
Date Created: 4/15/98 11:41:39 AM Def. Updatable: True
Last Updated: 4/15/98 11:41:39 AM MaxRecords: 0
ODBCTimeout: 60 OrderBy: tblPARAM.ID_CAT
OrderByOn: False Record Locks: No Locks
Records Affected: 0 RecordsetType: All Records
ReturnsRecords: True Type: Select
SQL
PARAMETERS xID Long;
SELECT tblPARAM.Name, tblPARAM.Omschrijf, tblPARAM.Max, tblPARAM.Min, tblPARAM.ID_USER,
tblPARAM.ID_SEKTIE, tblPARAM.ID_CAT, tblPARAM.Eh, tblPARAM.ID
FROM tblPARAM
WHERE (((tblPARAM.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Columns
Name Type Size
Name Text 10
Omschrijf Text 50
Max Number (Double) 8
Min Number (Double) 8
ID_USER Number (Long) 4
ID_SEKTIE Number (Long) 4
ID_CAT Number (Long) 4
Eh Text 15
ID Number (Long) 4
Properties
Date Created: 4/15/98 2:45:23 PM Def. Updatable: True
Last Updated: 4/15/98 2:45:23 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xID Long;
SELECT tblSEKTIE.NAME, tblSEKTIE.Omschrijf, tblSEKTIE.ID
FROM tblSEKTIE
WHERE (((tblSEKTIE.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Columns
Name Type Size
NAME Text 20
Omschrijf Text 50
ID Number (Long) 4
Properties
Date Created: 4/15/98 2:46:13 PM Def. Updatable: True
Last Updated: 4/15/98 2:46:13 PM MaxRecords: 0
ODBCTimeout: 60 OrderByOn: False
Record Locks: No Locks Records Affected: 0
RecordsetType: All Records ReturnsRecords: True
Type: Select
SQL
PARAMETERS xID Long;
SELECT tblUSER.Name, tblUSER.Omschrijf, tblUSER.ID
FROM tblUSER
WHERE (((tblUSER.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
Columns
Name Type Size
Name Text 50
Omschrijf Text 50
ID Number (Long) 4
Properties
Date Created: 4/15/98 2:12:41 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:22:09 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction:
True
SQL
PARAMETERS xID Long, xName Text, xOmschrijf Text;
UPDATE tblCATEGORIE SET tblCATEGORIE.Name = [xName], tblCATEGORIE.Omschrijving =
[xOmschrijf]
WHERE (((tblCATEGORIE.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
xName Text
xOmschrijf Text
tblCATEGORIE.Omschrijvin Text
Properties
Date Created: 4/15/98 11:40:36 AM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 11:40:36 AM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xID Long, xName Text, xOmschrijf Text, xMax IEEEDouble, xMin IEEEDouble, xID_USER
Long, xID_SEKTIE Long, xID_Cat Long, xEh Text;
UPDATE tblPARAM SET tblPARAM.Name = [xName], tblPARAM.Omschrijf = [xOmschrijf], tblPARAM.Max
= [xMax], tblPARAM.Min = [xMin], tblPARAM.ID_USER = [xID_USER], tblPARAM.ID_SEKTIE =
[xID_SEKTIE], tblPARAM.ID_CAT = [xID_CAT], tblPARAM.Eh = [xEh]
WHERE (((tblPARAM.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
xName Text
xOmschrijf Text
xMax Number (Double)
xMin Number (Double)
xID_USER Number (Long)
xID_SEKTIE Number (Long)
xID_Cat Number (Long)
xEh Text
Properties
Date Created: 4/15/98 2:48:33 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:48:33 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xID Long, xName Text, xOmschrijf Text;
UPDATE tblSEKTIE SET tblSEKTIE.NAME = [xName], tblSEKTIE.Omschrijf = [xOmschrijf];
Query Parameters
Name Type
xID Number (Long)
xName Text
xOmschrijf Text
Properties
Date Created: 4/15/98 2:50:24 PM Def. Updatable: True
FailOnError: False Last Updated: 4/15/98 2:50:24 PM
MaxRecords: 0 ODBCTimeout: 60
Record Locks: Edited Record Records Affected: 0
ReturnsRecords: True Type: Update
UseTransaction: True
SQL
PARAMETERS xID Long, xName Text, xOmschrijf Text;
UPDATE tblUSER SET tblUSER.Name = [xName], tblUSER.Omschrijf = [xOmschrijf]
WHERE (((tblUSER.ID)=[xID]));
Query Parameters
Name Type
xID Number (Long)
xName Text
xOmschrijf Text
Bijlage B -Programma Schema's-
Bijlage C –parameter overdracht-
with Visual Basic 5.0 ZD Press
Bijlage E -Plan Van Aanpak (b)-
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
30.03.’98 |
8u00 |
10u00 |
Melden bij personeelsdienst voor contract en medische keuring. |
10u00
|
12u30
|
Ververen e-mail adress en externe toegang tot e-mail van de hogeschool |
||
13u00 |
14u00 |
Overleg met Dhr. J. Debal over stageopdracht en preciese aanpak van het gestelde probleem: Het op intranet zetten van "IKS2" Excel gegevens, waarop aan de hand van WebAction in samenwerking met Visual Basic query’s ,die in Acces gedefinieerd zijn, kunnen worden uitgevoerd. |
||
15u00 |
16u30 |
Doornemen WebAction handleiding en IKS2 tabellen. |
||
Dinsdag |
31.03.’98 |
7u45 |
8u00 |
Flowchart diagram maken over de werking van WebAction in samenwerking met Visual Basic. |
8u00
|
10u30
|
Doornemen HTML-reference guide en oefenen met het maken van HTML-documenten |
||
10u30 13u00 |
12u30 16u15 |
Meewerken aan de tot standkoming van de eerste test voor WebAction nml. Login
|
||
Woensdag |
01.04.’98 |
7u45
|
11u30
|
Meewerken aan de tot standkoming van NewUser en ChangePW |
11u30 |
12u30 |
Testen van NewUser en ChangePW Onderandere doormiddel van invoegen ErrorTraps |
||
13u00 |
14u30 |
Optimaliseren van de gemaakte Responses in de Classes dmv. Case statements |
||
14u30 |
16u15 |
Maken van de code voor Environment |
||
Donderdag |
02.04.’98 |
7u45 |
10u30 |
Ondekte errors in Code veranderen en Code bijschaven door het tot public verheffen van bepaalde functies zoals IsLeeg en ShowTable |
10u30 |
11U30 |
Maken van de code, tabellen en query’s voor App en NotGranted |
||
13u00 |
13u30 |
Testen van App en NotGranted Onderandere doormiddel van invoegen ErrorTraps |
||
13u30 |
14u00 |
Flowchart diagram maken om de werking van de site te verduidelijken en overzichtelijk weer te geven. |
||
14u00 |
16u15 |
Maken van de code, tabellen en query’s voor Granted en Revoked |
||
Vrijdag |
03.04.’98 |
7u45 |
10u00 |
Testen van de gemaakte code, tabellen en query’s voor Granted en Revoked dmv. testruns met dummy namen in de tabellen |
10u00 |
12u00 |
Maken van code voor eerste HTML object uit de HTML-reference guide. |
||
12u30 |
16u15 |
Maken van de code voor de objecten tot en met Caption |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
30.03.’98 |
7u30 |
12u00 |
Maken van de code voor HTMLobjects, vanaf Caption tot en met Iframe |
12u30
|
16u15
|
Maken vqn de code voor HTMLobjects, vanaf Iframe tot en met Object |
||
Dinsdag |
31.03.’98 |
7u30 |
12u00 |
Afaken van HTMLobject,vanaf Object tot en met XMP |
12u30
|
13u30
|
Document maken met de Tag's en de bijbehorende Classnames. |
||
13u30 |
16u00 |
Na kijken en corrigeren van code. |
||
16u00 |
16u30 |
Werken aan verslaggeving voor school |
||
Woensdag |
01.04.’98 |
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
Donderdag |
02.04.’98 |
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
Vrijdag |
03.04.’98 |
|
|
|
|
|
|
||
|
|
|
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
6.04.’98 |
Vrij 2de paasdag |
||
Dinsdag |
7.04.’98 |
7u30 |
12u00 |
Afaken van HTMLobject,vanaf Object tot en met XMP |
12u30
|
13u30
|
Document maken met de Tag's en de bijbehorende Classnames. |
||
13u30 |
16u00 |
Na kijken en corrigeren van code. |
||
16u00 |
16u30 |
Werken aan verslaggeving voor school |
||
Woensdag |
08.04.’98 |
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
Donderdag |
09.04.’98 |
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
Vrijdag |
10.04.’98 |
7u30 |
12u00 |
Verder werken aan testprogramma voor IKS2Acces Maken van Toevoeg forms en code voor Sektie, Categorie en Param |
12u00 |
16u15 |
Testen gemaakte code en verbeteringen/veranderingen aan brengen. Leren uit boek Hardcore Visual Basic |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
13.04.’98 |
7u30 |
12u00 |
Verder werken aan testprogramma IKS2, toevoegen van functies en forms voor Delete/Verwijder voor Sektie, Categorie en Param |
12u30
|
16u15
|
Testen van code en verder werken aan Update, verbeteren van code, ondekte fouten in Database en HTML-object veranderen |
||
Dinsdag |
14.04.’98 |
7u30 |
10u00 |
Test programma is af en goed gekeurd |
10u00
|
12u30
|
Scrijven van code voor generen van een dynamische internet pagina Param… en Parammodify |
||
12u30 |
15u00 |
Testen van eerste dynamische internet pagina en nadenken over en debuggen van fouten in tweede pagina |
||
16u00 |
16u30 |
Verder code veranderen aan Parammodify en begin maken met nieuwe klasse ParamUpdate |
||
Woensdag |
15.04.’98 |
7u30 |
12u00 |
Testen van html pagina's die gegenereerd worden door Parammodify en ParamUpdate. |
12u30 |
16u30 |
Schrijven van code voor ParamInsert |
||
Donderdag |
16.04.’98 |
7u30 |
12u00 |
Testen van Paraminsert pagina en aanpassen van code voor ParamUpdate. |
12u30 |
16u30 |
Verbeteren en versnellen van code door het veranderen van bepaalde procedures en functies vooral Ctsend inplaats van stapelen met temp Lijst genereeren in een globale functie en niet in iedere klasse apart |
||
Vrijdag |
17.04.’98 |
|
|
|
|
|
|
||
|
|
|
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
28.04.’98 |
7u30 |
12u00 |
Veranderen van code voor opgedoken error in lijstgeneratie code. |
12u30
|
16u15
|
Verder werken aan waardeliijst code voor de klasse Waardelijst en testen van html-pagina |
||
Dinsdag |
29.04.’98 |
7u30 |
10u00 |
Probleem met lijst generatie code verhelpen door nieuwe code te schrijven voor ctsend nml ctsendx |
10u00
|
12u30
|
Verder werken aan de klasse waardelijst en testen van gegenereerde html-pagina |
||
12u30 |
16u30 |
Schrijven van code voor WaardeShow klasse en testen |
||
Woensdag |
30.04.’98 |
7u30 |
|
Schrijven van code voor WaardeUpdate en testen |
10u00 |
12u30 |
Layout van de door WaardeShow iets aan passen en code van Waarde update errors proberen optelossen |
||
13u00 |
16u30 |
Verdere Error in IKS2Acces van WaardeUpdare verhelpen door aanpassing te verrichten aan beide klassen. |
||
Donderdag |
31.04.’98 |
7u30 |
10u00 |
Schrijven van code voor Report, het selecteren van een param en het jaar |
10u00 |
12u30 |
Testen van Report en schrijven van Report.. Het weergeven van waarden per maand van de geselecteerd param |
||
13u00 |
14u00 |
Testen van Report.. en veranderingen aan brengen. |
||
14u00 |
15u30 |
Schrijven van code voor ReportGraph voor het weergeven van den grafiek van de geselecteerde waarden. |
||
Vrijdag |
01.05.’98 |
Dag van de Arbeid |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
04.05.’98 |
7u30 |
12u00 |
ReportGraph herschrijven zodat de grafieken weergegeven worden door OlectraChart ipv IEChart |
12u30
|
16u15
|
Implementeeren van de variabelen van OlectraChart zoals kleur groote en Min en Max |
||
Dinsdag |
05.05.’98 |
7u30 |
12u00 |
Afmaken van ReportGraph en testen. |
12u30 |
16u30 |
Problemen die naar voren zijn gekomen met het testen van ReportGraph zoals het probleem met de cab-files die nog aangemaakt moesten worden maar toch beter van de OlectraChart site gekopieerd konden worden |
||
Woensdag |
06.05.’98 |
7u30 |
12u00 |
Besluiten een navbar te maken voor het navigeren over de site. Voorbeelden op het net bekijken voor het maken van frames. |
12u30 |
16u15
|
Button's op de navbar voorzien van script zodat ze van kleur verander als ze aan gekliked worden. |
||
Donderdag |
07.05.’98 |
7u30
|
12u00
|
Buttons op de navbar voorzien van kleur en het algehele uiterlijk van de navbar bepalen. |
12u00
|
16u15
|
Verder werken aan de navbar links in orde maken en zorgen dat de links eindigen in het goede frame. |
||
Vrijdag |
08.05.’98 |
7u30 12u30 |
12u00 16u15 |
Laatse hand leggen aan de NavBar. Verandering doorvoeren aan Login en besluiten login met behulp van Active Sever Pages te veranderen. |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
11.05.’98 |
7u30 |
12u00 |
Login2 maken. Klasse Login en User maken. |
12u30 |
16u15 |
Klasse Membership en Group |
||
Dinsdag |
12.05.’98 |
7u30 |
12u00 |
Klasse Permissions en Application |
12u30 |
16u30 |
Veranderingen aan berengen aan de klassen. En een begin maken met Login2Test. |
||
Woensdag |
13.05.’98 |
7u30 |
12u30 |
Login van Login2Test maken zodat gegevens van users worden weer gegeven. |
13u00 |
16u30 |
New User implementeren op het login form zodat bij fout login een new user aangemaakt kan worden. |
||
Donderdag |
14.05.’98 |
7u30 |
16u30 |
AdminTools implementeren en Test runs uitvoeren. Veranderingen aanbrengen in Login2 vooral met relatie tot IsAdmin |
Vrijdag |
15.05.’98 |
7u30 |
12u00 |
Afwerken van Login2Test |
12u30 |
16u30 |
Informatie over IIS, AxtiveX en ISAPI opzoeken. Typen aan het stageverslag. |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
18.05.’98 |
7u30 |
16u15 |
Werken aan stageverslag
|
Dinsdag |
19.05.’98 |
7u30 |
16u30 |
Werken aan stageverslag
|
Woensdag |
20.05.’98 |
7u30 |
12u30 |
Werken aan stageverslag
|
13u00 |
16u30 |
Stagebezoek stagedocent
|
||
Donderdag |
21.05.’98 |
Hemelvaart dag |
||
Vrijdag |
22.05.’98 |
Vrij |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
25.05.’98 |
7u30 |
12u00 |
|
12u30 |
16u15 |
|||
Dinsdag |
26.05.’98 |
7u30 |
12u00 |
|
12u30 |
16u30 |
|||
Woensdag |
27.05.’98 |
7u30 |
12u30 |
|
13u00 |
16u30 |
|||
Donderdag |
28.05.’98 |
7u30 |
12u30 |
|
13u00 |
16u30 |
|||
Vrijdag |
29.05.’98 |
7u30 |
12u00 |
|
12u30 |
16u30 |
Dag |
Datum |
Begin |
Eind |
Omschrijving |
Maandag |
01.06.’98 |
1ste Pinksteren Vrij |
||
Dinsdag |
02.06.’98 |
7u30 |
12u00 |
|
12u30 |
16u30 |
|||
Woensdag |
03.05.’98 |
7u30 |
12u30 |
|
13u00 |
16u30 |
|||
Donderdag |
04.05.’98 |
7u30 |
12u30 |
|
13u00 |
16u30 |
|||
Vrijdag |
05.06.’98 |
Huwelijksfeest Zus |